/**
 * Ingenius-Group S.A.S
 *
 * Project: SAU
 * File: UsersService.java
 * Date: 28/02/2011
 */

package com.ingenius.sau.client.service;

import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.ingenius.sau.shared.model.users.Group;
import com.ingenius.sau.shared.model.users.Role;
import com.ingenius.sau.shared.model.users.User;
import com.ingenius.sau.shared.util.filter.Filter;

/**
 * Class <strong>UsersService</strong>
 * 
 * @author Jesus David
 * @version 0.1
 */
@RemoteServiceRelativePath("usersService")
public interface UsersService extends RemoteService {

	public Boolean saveOrUpdateUser(User user);

	public Boolean deleteUser(String id);

	public User getUser(String id);

	public PagingLoadResult<User> findUsers(List<Filter> filters,
			BasePagingLoadConfig config);

	public Boolean saveOrUpdateRole(Role role);

	public Boolean deleteRole(String id);

	public Role getRole(String id);

	public PagingLoadResult<Role> findRoles(List<Filter> filters,
			BasePagingLoadConfig config);

	public List<Role> loadAllRoles();

	public Boolean saveOrUpdateGroup(Group group);

	public Boolean deleteGroup(String id);

	public Group getGroup(String id);

	public PagingLoadResult<Group> findGroups(List<Filter> filters,
			BasePagingLoadConfig config);

	public Boolean hasPermission(String module, String action);

}
